package com.njtoyo.taxi.admin.service.business.customer;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.njtoyo.taxi.admin.rest.presenter.customer.CustomerArrearsListPresenter;
import com.njtoyo.taxi.admin.rest.presenter.customer.CustomerDetailPresenter;
import com.njtoyo.taxi.admin.rest.presenter.customer.CustomerListPresenter;
import com.njtoyo.taxi.admin.rest.presenter.customer.CustomerQueryLikeListPresenter;
import com.njtoyo.taxi.admin.rest.readfile.customer.CustomerQueryResult;
import com.njtoyo.taxi.admin.rest.wrapper.business.customer.*;
import com.njtoyo.taxi.entity.backend.AdminUser;
import com.taxi.entity.common.RestResult;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

public interface CustomerService {

    RestResult<Page<CustomerListPresenter>> getList(AdminUser adminUser, CustomerQueryWrapper wrapper);

    RestResult<CustomerDetailPresenter> detailsById(Long id);

    RestResult updateModileNumber(Long id, UpdateMobileNumberWrapper phoneWrapper);

    RestResult clearCache(Long id);

    RestResult updateUnlock(Long id, UpdateUnlockWrapper updateUnlockWrapper);

    RestResult<CustomerQueryResult> queryCustomerByExcel(MultipartFile file) throws IOException;

    void downloadPushToken(HttpServletResponse response, MultipartFile file) throws IOException;

    RestResult<Page<CustomerArrearsListPresenter>> getArrearsList(AdminUser adminUser, CustomerArrearsQueryWrapper wrapper);

    void exportArrearsList(AdminUser adminUser, CustomerArrearsExportWrapper wrapper, HttpServletResponse response) throws IOException;

    RestResult<List<CustomerQueryLikeListPresenter>> getListLike(CustomerLikeQueryWrapper wrapper);
}
